package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"strings"

	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/widget"
)

// 定义 API URL
const apiURL = "https://api.52vmy.cn/api/wl/yan/tiangou"

// 定义响应结构
type ApiResponse struct {
	Code    int    `json:"code"`
	Msg     string `json:"msg"`
	Content string `json:"content"`
}

func main() {
	// 创建 Fyne 应用
	myApp := app.New()
	myWindow := myApp.NewWindow("舔狗日记")

	// 创建一个文本框用于显示内容
	contentLabel := widget.NewLabel("点击按钮加载舔狗日记")

	// 创建一个按钮用于切换内容
	loadButton := widget.NewButton("加载新的舔狗日记", func() {
		content, err := fetchContent()
		if err != nil {
			contentLabel.SetText("加载失败，请检查网络连接")
			return
		}
		contentLabel.SetText(content)
	})

	// 将按钮和文本框放入容器中
	content := container.NewVBox(contentLabel, loadButton)

	// 设置窗口内容
	myWindow.SetContent(content)

	// 显示窗口
	myWindow.Resize(fyne.NewSize(400, 300))
	myWindow.ShowAndRun()
}

// 从 API 获取内容
func fetchContent() (string, error) {
	resp, err := http.Get(apiURL)
	if err != nil {
		return "", fmt.Errorf("请求失败: %w", err)
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		return "", fmt.Errorf("读取响应失败: %w", err)
	}

	var response ApiResponse
	err = json.Unmarshal(body, &response)
	if err != nil {
		return "", fmt.Errorf("解析 JSON 失败: %w", err)
	}

	if response.Code != 200 {
		return "", fmt.Errorf("API 返回错误: %s", response.Msg)
	}

	return strings.TrimSpace(response.Content), nil
}
